package com.itheima.test8;

public class studentTest {
    public static void main(String[] args) {
        //要求：再次添加一个学生对象，并在添加的时候金星学号的唯一性判断
        //添加完毕后，遍历所有
        //通过id删除学生信息
        //删除完毕后遍历
        //查询id为“heima002”的学生，如果勋在，则将他的年龄+1

        //创建学生数组
        student[] stu = new student[3];
        stu[0] = new student(1,"zhangsan",23);
        stu[1] = new student(2,"lisi",24);
        stu[2] = new student(3,"wangwu",25);

        //1.添加学生
        student stu4 = new student(4,"zhaoliu",26);
        //唯一性判断
        boolean flag = contains(stu , stu4.getId());
        if(flag){//如果已存在
            System.out.println("该id已存在");
        }else{//不存在，把学生对象添加到数组
            //判断数组是否存满
            int count  = getCount(stu);
            if(count == stu.length){
                //已经存满
                //创建新数组
                student[] newStu = createNewArr(stu);
                //把stu4添加进去
                newStu[count] = stu4;

                //2.打印学生
                printArr(newStu);

            }else{
                //没有存满
                stu[count] = stu4;
                //2.打印学生
                printArr(stu);
            }
        }

        //3.删除学生
        //找到id对应的索引
        int index = getIndex(stu, 2);
        //System.out.println(index);
        //如果存在，删除
        if(index != -1){
            stu[index] = null;
            //4.遍历数组
            printArr(stu);
        }else{
            //如果不存在，删除失败
            System.out.println("删除失败");
        }

        //5.查询id为“2”的学生，如果存在，则将他的年龄+1
        int index2 = getIndex(stu,2);
        //判断索引
        if(index2 != -1){
            //存在，年龄+1
            int newAge = stu[index2].getAge()+1;
            stu[index2].setAge(newAge);

            //遍历数组
            printArr(stu);
        }else{
            //不存在
            System.out.println("查询失败");
        }
    }

    //判断id在数组中是否存在
    public static boolean contains(student[] stu,int id){
        for (int i = 0; i < stu.length; i++) {
            //获取数组中学生对象的id
            int id1 = stu[i].getId();
            if (id1 == id) {
                return true;
            }
        }
        return false;
    }

    //判断数组中存了几个元素
    public static int getCount(student[] stu){
        //定义计数器
        int count = 0;
        for (int i = 0; i < stu.length; i++) {
            if(stu[i] != null){
                count ++;
            }
        }
        return count;
    }

    //把老数组中的元素复制到新数组中，新数组长度加一
    public static student[] createNewArr(student[] stu){
        student[] newArr = new student[stu.length + 1];
        for (int i = 0; i < stu.length; i++) {
            newArr[i] = stu[i];
        }
        return newArr;
    }

    //打印学生信息
    public static void printArr(student[] stu){
        for (int i = 0; i < stu.length; i++) {
            if(stu[i] != null){
                System.out.println(stu[i].getId() + "," + stu[i].getName() + "," + stu[i].getAge());
            }
        }
    }

    //找到id对应的索引
    public static int getIndex(student[] stu,int id){
        for (int i = 0; i < stu.length; i++) {
            //进行非空判断
            if(stu[i]!=null){
                if(stu[i].getId() == id){
                    return i;
                }
            }
        }
        return -1;//如果不存在返回 -1
    }
}
